// 导入智谱AI模块
const zhipuAI = require('../../utils/zhipu_ai');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 表单数据
    activityName: '',
    activityTypes: ['文娱', '体育', '学术', '公益', '其他'],
    typeIndex: 0,
    participants: '',
    budget: '',
    description: '',

    // AI 建议数据
    showAIIdeas: false,
    aiIdeas: '',
    loadingIdeas: false,

    // AI 日程安排数据
    meetingTitle: '',
    today: '',
    startDate: '',
    meetingDuration: 60,
    newMember: '',
    teamMembersList: [],
    datePreference: '工作日',
    timePreference: '晚上',
    showAISchedule: false,
    aiSchedule: '',
    loadingSchedule: false,

    // 模拟数据标记
    isMockData: false,

    // 我的活动列表
    myActivities: []
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log('活动策划助手页面加载');
    
    // 设置今天日期
    const today = new Date();
    const formattedToday = this.formatDate(today);
    this.setData({
      today: formattedToday,
      startDate: formattedToday
    });
    
    // 从本地存储加载活动
    this.loadActivitiesFromStorage();
  },
  
  /**
   * 格式化日期为yyyy-MM-dd格式
   */
  formatDate: function(date) {
    const year = date.getFullYear();
    const month = (date.getMonth() + 1).toString().padStart(2, '0');
    const day = date.getDate().toString().padStart(2, '0');
    return `${year}-${month}-${day}`;
  },
  
  /**
   * 从本地存储加载活动
   */
  loadActivitiesFromStorage: function() {
    const activities = wx.getStorageSync('myActivities') || [];
    this.setData({ myActivities: activities });
  },

  /**
   * 活动类型选择器变化处理
   */
  bindTypeChange: function (e) {
    this.setData({
      typeIndex: e.detail.value
    });
  },
  
  /**
   * 处理日期选择
   */
  bindDateChange: function(e) {
    this.setData({
      startDate: e.detail.value
    });
  },
  
  /**
   * 添加团队成员
   */
  addTeamMember: function() {
    if (!this.data.newMember.trim()) {
      return;
    }
    
    const member = this.data.newMember.trim();
    const teamMembersList = [...this.data.teamMembersList];
    
    if (!teamMembersList.includes(member)) {
      teamMembersList.push(member);
      this.setData({
        teamMembersList,
        newMember: ''
      });
    } else {
      wx.showToast({
        title: '该成员已添加',
        icon: 'none'
      });
    }
  },
  
  /**
   * 移除团队成员
   */
  removeTeamMember: function(e) {
    const member = e.currentTarget.dataset.member;
    const teamMembersList = this.data.teamMembersList.filter(m => m !== member);
    this.setData({ teamMembersList });
  },
  
  /**
   * 选择日期偏好
   */
  selectDatePreference: function(e) {
    this.setData({
      datePreference: e.currentTarget.dataset.preference
    });
  },
  
  /**
   * 选择时间偏好
   */
  selectTimePreference: function(e) {
    this.setData({
      timePreference: e.currentTarget.dataset.preference
    });
  },
  
  /**
   * 调整会议时长
   */
  durationChange: function(e) {
    this.setData({
      meetingDuration: e.detail.value
    });
  },

  /**
   * 获取AI活动创意和建议
   */
  getAIIdeas: function () {
    // 表单验证
    if (!this.validateForm()) {
      return;
    }

    this.setData({ loadingIdeas: true });

    // 准备请求消息
    const userInput = this.buildUserPrompt();
    const messages = [
      { role: 'system', content: '你是一个专业的活动策划顾问，擅长根据预算和目标提供合适的创意和资源建议。回答要简洁，不要使用特殊符号如#和*，只提供最重要的要点。' },
      { role: 'user', content: userInput }
    ];

    // 调用智谱AI
    zhipuAI.callZhipuAPI(messages, {
      fallbackToMock: true,
      mockType: 'activity_ideas',
      onSuccess: (response, data) => {
        console.log('AI响应成功:', response);
        // 处理回复，去除特殊符号
        const cleanResponse = this.cleanAIResponse(response);
        this.setData({
          aiIdeas: cleanResponse,
          showAIIdeas: true,
          loadingIdeas: false,
          isMockData: data.mock === true
        });
      },
      onError: (error) => {
        console.error('AI响应错误:', error);
        wx.showToast({
          title: '获取AI建议失败',
          icon: 'none'
        });
        this.setData({ loadingIdeas: false });
      }
    });
  },

  /**
   * 清理AI响应，去除特殊符号
   */
  cleanAIResponse: function(response) {
    if (!response) return '';
    // 去除特殊符号如#、*等
    let cleaned = response.replace(/[#*]/g, '');
    // 限制长度，保持简洁
    const maxLength = 300;
    if (cleaned.length > maxLength) {
      cleaned = cleaned.substring(0, maxLength) + '...';
    }
    return cleaned;
  },

  /**
   * 验证表单
   */
  validateForm: function () {
    if (!this.data.activityName.trim()) {
      wx.showToast({
        title: '请输入活动名称',
        icon: 'none'
      });
      return false;
    }

    if (!this.data.participants) {
      wx.showToast({
        title: '请输入预计人数',
        icon: 'none'
      });
      return false;
    }

    if (!this.data.budget) {
      wx.showToast({
        title: '请输入预算范围',
        icon: 'none'
      });
      return false;
    }

    return true;
  },
  
  /**
   * 保存活动到本地
   */
  saveActivity: function() {
    if (!this.data.showAIIdeas) {
      wx.showToast({
        title: '请先获取AI方案',
        icon: 'none'
      });
      return;
    }
    
    const newActivity = {
      id: Date.now(), // 使用时间戳作为唯一ID
      title: this.data.activityName,
      time: this.formatDate(new Date()), // 活动创建日期
      location: '待定',
      description: this.data.description,
      aiSuggestion: this.data.aiIdeas,
      budget: this.data.budget,
      participants: this.data.participants,
      type: this.data.activityTypes[this.data.typeIndex],
      tags: ['策划中']
    };
    
    // 获取现有活动列表
    const activities = wx.getStorageSync('myActivities') || [];
    activities.unshift(newActivity); // 添加到列表前面
    
    // 保存到本地存储
    wx.setStorageSync('myActivities', activities);
    
    // 更新页面数据
    this.setData({ myActivities: activities });
    
    wx.showToast({
      title: '活动已保存',
      icon: 'success'
    });
  },

  /**
   * 构建用户提示语
   */
  buildUserPrompt: function () {
    return `我正在策划一个名为"${this.data.activityName}"的${this.data.activityTypes[this.data.typeIndex]}类型活动。
预计参与人数约${this.data.participants}人，预算约${this.data.budget}元。
${this.data.description ? '活动描述：' + this.data.description : ''}

请简要提供：
1. 一个适合的活动创意及其可行性
2. 一个推荐的场地选择
3. 一项可利用的校内资源
请简短回答，不要使用特殊符号。`;
  },

  /**
   * 分析最佳会议时间
   */
  analyzeSchedule: function () {
    // 验证日程表单
    if (!this.validateScheduleInput()) {
      return;
    }

    this.setData({ loadingSchedule: true });

    // 准备请求消息
    const schedulePrompt = this.buildSchedulePrompt();
    
    const messages = [
      { role: 'system', content: '你是一个智能日程规划助手，能帮助团队找出最合适的会议时间。回答要简洁直接，不要使用特殊符号。' },
      { role: 'user', content: schedulePrompt }
    ];

    // 调用智谱AI
    zhipuAI.callZhipuAPI(messages, {
      fallbackToMock: true,
      mockType: 'activity_schedule',
      onSuccess: (response, data) => {
        console.log('AI日程分析成功:', response);
        // 处理回复，去除特殊符号
        const cleanResponse = this.cleanAIResponse(response);
        this.setData({
          aiSchedule: cleanResponse,
          showAISchedule: true,
          loadingSchedule: false,
          isMockData: data.mock === true
        });
      },
      onError: (error) => {
        console.error('AI日程分析错误:', error);
        wx.showToast({
          title: '分析日程失败',
          icon: 'none'
        });
        this.setData({ loadingSchedule: false });
      }
    });
  },
  
  /**
   * 构建日程安排提示语
   */
  buildSchedulePrompt: function() {
    return `为名为"${this.data.meetingTitle || '活动策划会议'}"的会议安排最佳时间。
开始日期：${this.data.startDate}
会议时长：${this.data.meetingDuration}分钟
参与人员：${this.data.teamMembersList.join('、')}
日期偏好：${this.data.datePreference}
时间偏好：${this.data.timePreference}

请推荐2-3个最合适的会议时间选项，并简述推荐理由。`;
  },
  
  /**
   * 重新生成日程建议
   */
  regenerateSchedule: function() {
    // 直接重新调用分析函数
    this.analyzeSchedule();
  },
  
  /**
   * 确认日程安排并发送邀请
   */
  confirmSchedule: function() {
    wx.showToast({
      title: '邀请已发送',
      icon: 'success'
    });
    
    // 这里可以添加保存日程和发送邀请的逻辑
    setTimeout(() => {
      this.setData({
        showAISchedule: false,
        meetingTitle: '',
        teamMembersList: []
      });
    }, 1500);
  },

  /**
   * 验证日程输入
   */
  validateScheduleInput: function() {
    if (!this.data.meetingTitle.trim()) {
      wx.showToast({
        title: '请输入会议主题',
        icon: 'none'
      });
      return false;
    }

    if (this.data.teamMembersList.length === 0) {
      wx.showToast({
        title: '请添加至少一名参与人员',
        icon: 'none'
      });
      return false;
    }

    if (!this.data.startDate) {
      wx.showToast({
        title: '请选择开始日期',
        icon: 'none'
      });
      return false;
    }

    return true;
  },

  /**
   * 查看详细方案
   */
  viewDetailedPlan: function () {
    // 这里可以跳转到详细方案页面或弹出模态框
    wx.showToast({
      title: '详细方案功能开发中',
      icon: 'none'
    });
  },

  /**
   * 查看所有活动
   */
  viewAllActivities: function () {
    // 这里可以跳转到活动列表页面
    wx.showToast({
      title: '活动列表功能开发中',
      icon: 'none'
    });
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    return {
      title: '活动策划助手 - 用AI提升你的活动策划效率',
      path: '/pages/activity_planner/activity_planner'
    };
  }
}); 